package models;

import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import com.google.gson.annotations.Until;

import controllers.Secure.Security;

import play.data.validation.Required;
import play.db.jpa.Model;

@Entity
@Table(
	name = "USUARIO",
	uniqueConstraints= @UniqueConstraint(columnNames = { "email" })
)
public class Usuario extends Model{

	
	@Required
	public String nome;
	@Required
	public String siape;
	
	@Required
	public String email;
	@Required
	public int senhaHash;
	@Required
	public int coordenador;

	/**
	 * Construtor
	 * @param email
	 * @param senha
	 */
	public Usuario(String nome, String siape,String email, String senha){
		this.nome = nome;
		this.siape = siape;
		this.email = email;
		this.senhaHash = senha.hashCode();
		this.coordenador = 0;
	}

	/**
	 * informa os membro dos colegiado, excluindo o coordenador
	 * @return ulista de usuarios
	 */
	public static List<Usuario> getColegiado(){
		return Usuario.find("byCoordenador", 0).fetch();
	}

	/**
	 * fornece o usuario do email fornecido 
	 * @param email email do usuario que se deseja
	 * @return o usuario que possui o email
	 */
	public static Usuario getUsuarioPorEmail(String email){
		return Usuario.find("byEmail", email).first();
	}


	/**
	 * informa quem eh o coordenador cadastrado no sistema 
	 * @return coordenador
	 */
	public static Usuario getUsuarioCoordenador(){
		return Usuario.find("byCoordenador", 1).first(); 
	}

	/**
	 * informa o usuario que possui o email e senha  informados
	 * @param email email do usuario
	 * @param senha senha usuario
	 * @return usuario ou null se nao existir
	 */
	public static Usuario getUsuario(String email, String senha){
		return Usuario.find("byEmailAndSenhaHash", email, senha.hashCode()).first(); 
	}
}
